//package com.rocksdata.mip.ui.activity;
//
//import android.annotation.SuppressLint;
//import android.content.Context;
//import android.graphics.drawable.Drawable;
//import android.os.Bundle;
//import android.text.Editable;
//import android.text.Html;
//import android.text.TextWatcher;
//import android.view.View;
//import android.widget.AbsListView;
//import android.widget.AdapterView;
//import android.widget.EditText;
//import android.widget.ImageView;
//import android.widget.LinearLayout;
//import android.widget.TextView;
//
//import com.ctz.commonframe.constant.DeviceInfo;
//import com.ctz.commonframe.ui.BaseActivity;
//import com.ctz.commonframe.ui.view.EmbeddedGridView;
//import com.ctz.commonframe.ui.view.EmbeddedListView;
//import com.ctz.commonframe.ui.widget.AbsAdapter;
//import com.ctz.commonframe.ui.widget.AdapterViewHolder;
//import com.ctz.commonframe.utils.Logger;
//import com.rocksdata.mip.Config;
//import com.rocksdata.mip.business.BusinessManager;
//import com.rocksdata.mip.business.CampusAppManager;
//import com.rocksdata.mip.entity.CampusAppInfo;
//import com.rocksdata.mip.R;
//import com.rocksdata.mip.business.UserInfoManager;
//
//import org.xutils.view.annotation.ContentView;
//import org.xutils.view.annotation.Event;
//import org.xutils.view.annotation.ViewInject;
//
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
///**
// * Created by 陈堂正 on 2016/11/24.
// */
//
//@ContentView(R.layout.activity_campus_app)
//public class AppManagerActivity extends BaseActivity {
//
//    @ViewInject(R.id.tv_app_manager)
//    private TextView tvManager;
//    @ViewInject(R.id.tv_selected_app)
//    private TextView tvSelectedApp;
//    @ViewInject(R.id.et_campus_app_search)
//    private EditText etSearch;
//    @ViewInject(R.id.layout_app_manager)
//    private LinearLayout layoutAppManager;
//    @ViewInject(R.id.gv_app_search_result)
//    private EmbeddedGridView gvSearchResult;
//    @ViewInject(R.id.gv_selected_app)
//    private EmbeddedGridView gvSelectedApp;
//    @ViewInject(R.id.lv_app)
//    private EmbeddedListView lvApp;
//
//    private boolean isModifyMode;
//    private List<CampusAppInfo> allAppList;
//    private List<CampusAppInfo> selectedAppList = new ArrayList<>();
//    private AppGridAdapter selectedAdapter;
//    private List<Map<Integer, List<CampusAppInfo>>> appMapList;
//    private AppAdapter appAdapter;
//    private List<CampusAppInfo> searchResultList = new ArrayList<>();
//    private SearchAppResultAdapter searchAdapter;
//
//    @Override
//    public void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//
//        allAppList = BusinessManager.getApplicationManager().getAppList(CampusAppInfo.MODULE_HOME_PAGE,
//                UserInfoManager.getCurrentUserType(), UserInfoManager.isVisitor(), true, true);
//        handleAppList();
//        selectedAdapter = new AppGridAdapter(this, selectedAppList, isModifyMode, true);
//        gvSelectedApp.setAdapter(selectedAdapter);
//        gvSelectedApp.setOnItemClickListener(new AdapterView.OnItemClickListener() {
//            @Override
//            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//                CampusAppInfo info = selectedAdapter.getItem(position);
//                if(info != null){
//                    if(isModifyMode) {
//                        removeApp(info);
//                    }
//                }
//            }
//
//        });
//
//        appAdapter = new AppAdapter(this, appMapList);
//        lvApp.setAdapter(appAdapter);
//
//        etSearch.addTextChangedListener(new TextWatcher() {
//            @Override
//            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//
//            }
//
//            @Override
//            public void onTextChanged(CharSequence s, int start, int before, int count) {
//                if (s.length() == 0) {
//                    gvSearchResult.setVisibility(View.GONE);
//                    layoutAppManager.setVisibility(View.VISIBLE);
//                    selectedAdapter.notifyDataSetChanged();
//                    appAdapter.notifyDataSetChanged();
//                    hideKeyboard(etSearch);
//                } else {
//                    gvSearchResult.setVisibility(View.VISIBLE);
//                    layoutAppManager.setVisibility(View.GONE);
//                    searchResultList.clear();
//                    for(CampusAppInfo info: allAppList){
//                        if(info.getName().contains(s)){
//                            searchResultList.add(info);
//                        }
//                    }
//                    searchAdapter = new SearchAppResultAdapter(AppManagerActivity.this, searchResultList, isModifyMode);
//                    gvSearchResult.setAdapter(searchAdapter);
//                    gvSearchResult.setOnItemClickListener(new AdapterView.OnItemClickListener() {
//                        @Override
//                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//                            CampusAppInfo info = searchAdapter.getItem(position);
//                            if(info != null){
//                                if(isModifyMode) {
//                                    if(info.isChecked()){
//                                        info.setChecked(false);
//                                        selectedAppList.remove(info);
//                                    }else{
//                                        info.setChecked(true);
//                                        selectedAppList.add(info);
//                                    }
//                                    searchAdapter.notifyDataSetChanged();
//                                }else{
//                                    CampusAppManager.skipToChildApplication(AppManagerActivity.this, info);
//                                }
//                            }
//                        }
//                    });
//                }
//            }
//
//            @Override
//            public void afterTextChanged(Editable s) {
//
//            }
//        });
//        onModifyModeChanged();
//    }
//
//    private void onModifyModeChanged(){
//        tvManager.setText(isModifyMode ? "完成" : "编辑");
//        gvSelectedApp.setVisibility(isModifyMode ? View.VISIBLE : View.GONE);
//        if(selectedAdapter != null)
//            selectedAdapter.setModifyMode(isModifyMode);
//        if(appAdapter != null)
//            appAdapter.setModifyMode(isModifyMode);
//        updateSelectedApp();
//        updateAppChecked();
//    }
//
//    private void handleAppList(){
//        if(appMapList == null){
//            appMapList = new ArrayList<>();
//        }
//        for(int i = 0; i < Config.APP_TYPES.length; i++){
//            @SuppressLint("UseSparseArrays")
//            Map<Integer, List<CampusAppInfo>> map = new HashMap<>();
//            map.put(i, new ArrayList<CampusAppInfo>());
//            for(CampusAppInfo info: allAppList){
//                if (info.getType() == i) {
//                    if(info.isEnable())
//                        map.get(i).add(0, info);
//                    else
//                        map.get(i).add(info);
//                }
//            }
//            if(map.get(i).size() > 0)
//                appMapList.add(map);
//        }
//        for(CampusAppInfo info: allAppList){
//            if(info.isChecked() && info.isEnable()){
//                selectedAppList.add(info);
//            }
//        }
//    }
//
//    @Event(value = {R.id.iv_back, R.id.tv_app_manager})
//    private void OnClick(View v) {
//        switch (v.getId()) {
//            case R.id.iv_back:
////                Intent intent = new Intent();
////                intent.putExtra("data", (Serializable)allAppList);
////                setResult(RESULT_OK, intent);
//                finish();
//                break;
//            case R.id.tv_app_manager:
//                isModifyMode = !isModifyMode;
//                onModifyModeChanged();
//                break;
//        }
//    }
//
//    private void updateSelectedApp(){
//        tvSelectedApp.setText("");
//        for(CampusAppInfo info: selectedAppList){
//            String html = "<img src='" + info.getIconRes() + "'/>";
//            Html.ImageGetter imgGetter = new Html.ImageGetter() {
//
//                @Override
//                public Drawable getDrawable(String source) {
//                    int id = Integer.parseInt(source);
//                    Drawable d = getResources().getDrawable(id);
//                    d.setBounds(0, 0, d.getIntrinsicWidth() / 5 * 3, d.getIntrinsicHeight() / 5 * 3);
//                    return d;
//                }
//            };
//            CharSequence charSequence = Html.fromHtml(html, imgGetter, null);
//            tvSelectedApp.append(charSequence);
//            tvSelectedApp.append("  ");
//        }
//    }
//
//    private void updateAppChecked(){
//        for(CampusAppInfo info: allAppList){
//            BusinessManager.getApplicationManager().updateAppChecked(info.getName(), info.isChecked());
//        }
//    }
//
//    private void addApp(CampusAppInfo info){
//
//        info.setChecked(true);
//        selectedAppList.add(info);
//        Logger.e("addApp, selectedCount=" + selectedAppList.size());
//        selectedAdapter.notifyDataSetChanged();
//        appAdapter.notifyDataSetChanged();
//    }
//
//    private void removeApp(CampusAppInfo info){
//        info.setChecked(false);
//        selectedAppList.remove(info);
//        Logger.e("removeApp, selectedCount=" + selectedAppList.size());
//        selectedAdapter.notifyDataSetChanged();
//        appAdapter.notifyDataSetChanged();
//    }
//
//    private class AppAdapter extends AbsAdapter<Map<Integer, List<CampusAppInfo>>> {
//        private boolean isModifyMode;
//
//        AppAdapter(Context context, List<Map<Integer, List<CampusAppInfo>>> dataList) {
//            super(context, dataList, R.layout.item_app);
//        }
//
//        void setModifyMode(boolean isModifyMode){
//            if(this.isModifyMode != isModifyMode) {
//                this.isModifyMode = isModifyMode;
//                notifyDataSetChanged();
//            }
//        }
//
//        @Override
//        public void convert(final AdapterViewHolder holder, final Map<Integer, List<CampusAppInfo>> data) {
//            TextView type = holder.getView(R.id.tv_app_type_label);
//            EmbeddedGridView gridView = holder.getView(R.id.gv_app);
//            int key = (int) data.keySet().toArray()[0];
//            type.setText(Config.APP_TYPES[key]);
//            final List<CampusAppInfo> list = data.get(key);
//            AppGridAdapter adapter = new AppGridAdapter(context, list, isModifyMode, false);
//            gridView.setAdapter(adapter);
//            gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
//                @Override
//                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//                    if(position < list.size()) {
//                        if (isModifyMode) {
//                            if (!list.get(position).isChecked()) {
//                                addApp(list.get(position));
//                            }
//                        }else{
//                            if(list.get(position).isEnable())
//                                CampusAppManager.skipToChildApplication(context, list.get(position));
//                        }
//                    }
//                }
//            });
//        }
//    }
//
//    private class AppGridAdapter extends AbsAdapter<CampusAppInfo>{
//        private boolean isModifyMode;
//        private boolean isSelectedType;
//
//        void setModifyMode(boolean isModifyMode){
//            if(this.isModifyMode != isModifyMode) {
//                this.isModifyMode = isModifyMode;
//                notifyDataSetChanged();
//            }
//        }
//
//        AppGridAdapter(Context context, List<CampusAppInfo> dataList, boolean isModifyMode, boolean isSelectedType) {
//            super(context, dataList, R.layout.item_app_grid);
//            this.isModifyMode = isModifyMode;
//            this.isSelectedType = isSelectedType;
//        }
//
//        @Override
//        public void convert(AdapterViewHolder holder, CampusAppInfo data) {
//            TextView name = holder.getView(R.id.tv_app_name);
//            ImageView icon = holder.getView(R.id.iv_app_icon);
//            ImageView flag = holder.getView(R.id.iv_app_control);
//            if(data != null) {
//                name.setText(data.getName());
//                icon.setImageResource(data.getIconRes());
//                flag.setVisibility(isModifyMode && data.isEnable() ? View.VISIBLE : View.GONE);
//                if (data.isChecked()) {
//                    if (isSelectedType)
//                        flag.setImageResource(R.mipmap.ic_app_remove);
//                    else
//                        flag.setImageResource(R.mipmap.ic_app_selected);
//                } else {
//                    flag.setImageResource(R.mipmap.ic_app_add);
//                }
//            }
//            holder.getConvertView().setLayoutParams(new AbsListView.LayoutParams(
//                    AbsListView.LayoutParams.MATCH_PARENT, DeviceInfo.screenWidth / 4));
//        }
//    }
//
//    private class SearchAppResultAdapter extends AbsAdapter<CampusAppInfo>{
//        private boolean isModifyMode;
//
//        SearchAppResultAdapter(Context context, List<CampusAppInfo> dataList, boolean isModifyMode){
//            super(context, dataList, R.layout.item_app_grid);
//            this.isModifyMode = isModifyMode;
//        }
//
//        @Override
//        public void convert(AdapterViewHolder holder, CampusAppInfo data) {
//            TextView name = holder.getView(R.id.tv_app_name);
//            ImageView icon = holder.getView(R.id.iv_app_icon);
//            ImageView flag = holder.getView(R.id.iv_app_control);
//            if(data != null) {
//                name.setText(data.getName());
//                icon.setImageResource(data.getIconRes());
//                if(isModifyMode){
//                    flag.setVisibility(View.VISIBLE);
//                    if (data.isChecked()) {
//                        flag.setImageResource(R.mipmap.ic_app_remove);
//                    } else {
//                        flag.setImageResource(R.mipmap.ic_app_add);
//                    }
//                }else{
//                    flag.setVisibility(View.GONE);
//                }
//            }
//            holder.getConvertView().setLayoutParams(new AbsListView.LayoutParams(
//                    AbsListView.LayoutParams.MATCH_PARENT, DeviceInfo.screenWidth / 4));
//        }
//    }
//}
